//栈stack、单端队列queue、优先队列priority_queue
#include <iostream>
#include <stack>
#include <queue>

#include <list>
using namespace std;

//自定义比较器
class cmp
{
public:
    bool operator()(int a,int b)
    {
        return a > b;
    }
};

int main(int argc, char const *argv[])
{
    // stack<int> s;

    // s.push(1);
    // s.push(2);
    // s.push(3);

    // while(!s.empty())
    // {
    //     cout << s.top() << endl;
    //     s.pop();
    // }

    // queue<int> q; 
    // q.push(1);
    // q.push(2);
    // q.push(3);
    // while(!q.empty())
    // {
    //     cout << q.front() << endl;
    //     q.pop();
    // }

    priority_queue<int,deque<int>,cmp> pq;

    pq.push(1);
    pq.push(4);
    pq.push(6);
    pq.push(2);

    while(!pq.empty())
    {
        cout << pq.top() << " " << endl;
        pq.pop();
    }

    return 0;
}
